@苏苏
3年前 提问
1个回答
防火墙多久断开tcp连接
X0_0X
3年前
在防火墙没有数据连接的情况下在五秒左右会自动将TCP连接断开,有长连接的情况下则不会断开,如不想让防火墙TCP连接自动断开可以设置TCP长连接心跳机制或者设置socket的keepalive为true,这样即使没有数据,tcp/ip的底层也会保持连接。
设置TCP长连接心跳机制方法是直接修改套接字选项,配置文件如下:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 600) # 覆盖tcp_keepalive_time 表示多久时间未通信后进行探测
client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 10) # 覆盖tcp_keepalive_probes 探测次数
client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 30) # 覆盖tcp_keepalive_intvl 每次探测的超时时间
client.connect((host, port))